
#ifndef _Oz_Webui_IRequestCycle_H_
#define _Oz_Webui_IRequestCycle_H_

#include <Oz/Webui/Webui.h>
#include <Oz/IHttp.h>

namespace Oz{
    namespace Webui{
        class IRequestCycle{
            public:
            virtual ~IRequestCycle();
           /**
            * Devuelve el objeto request en curso.
            **/
            virtual Oz::IRequestPtr getRequest()const = 0;

           /**
            * Permite acceder al objeto response.
            **/
            virtual Oz::IResponsePtr getResponse()const = 0;

           /**
            * Este metodo se encarga de procesar un request.
            **/
            virtual Oz::IResponsePtr processRequest(const Oz::IRequestPtr& request) = 0;

            protected:
            IRequestCycle();
            IRequestCycle& operator=(const IRequestCycle& rhs);
        };
    }
}
#endif
